﻿<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cardapio extends MY_Controller {

	public function __construct(){
		parent::__construct();

		if(!$this->isEmpresaLoggedIn()){
			redirect('parasuaempresa/home');
		}

		$this->load->model('negocio/estado_model', 'Estado_model');
		$this->load->model('negocio/cidade_model', 'Cidade_model');
		$this->load->model('negocio/empresa_model', 'Empresa_model');

		$this->setViewData('cadastro_empresa', $this->getLoggedUser());
	}

	public function index(){
		$user_info = $this->getLoggedUser();
		$cod_empresa_auto = $user_info['cod'];

		$categorias = $this->Empresa_model->getCategorias($user_info['cod']);

		$this->setViewData('categorias', $categorias);
		$this->addScript(base_url('assets/js/parasuaempresa/cardapio/cardapio.js'));
		$this->setViewData('main_content', 'parasuaempresa/cardapio/cardapio');
		$this->load->view('_shared/template', $this->viewData);
	}

	public function cadastrar_categoria(){
		$user_info = $this->getLoggedUser();
		$cod_empresa_auto = $user_info['cod'];

		$cod_categoria_auto = $this->uri->segment(4);

		// tipo(1=erro,2=alerta,3=sucesso), mensagem
		$formMessage = array();
		$formData = array();

		// Dados formulário
		$datetime           = $this->input->post('datetime');
		$desc_categoria     = $this->input->post('desc_categoria');
		
		if($cod_categoria_auto){
			$categoria = new Categoria($cod_categoria_auto);
			$formData["desc_categoria"] = $categoria->getDescCategoria();
			$this->setViewData('form_action', 'parasuaempresa/cardapio/editar_categoria/'.$cod_categoria_auto);
			$this->setViewData('page_title', 'Editar categoria');
		}else{
			$this->setViewData('form_action', 'parasuaempresa/cardapio/cadastrar_categoria');
			$this->setViewData('page_title', 'Cadastrar categoria');
		}

		//Cadastro da empresa
		if($datetime && $desc_categoria && !$cod_categoria_auto){	
			$categoria = new Categoria();
			$categoria->setDescCategoria($desc_categoria);
			$categoria->setCodEmpresa($cod_empresa_auto);

			$validacao = $categoria->gravar();

			if(!$validacao[0]){
				$formMessage = array(1, $validacao[1]);
			}else{
				$formMessage = array(3, 'Cadastro efetuado com sucesso. Por favor, acesse seu e-mail para confirmar o cadastro. ' . anchor('parasuaempresa/cardapio/cadastrar_item/'.$categoria->getCodCategoria(),'Novo item'));
			}
		}else if($datetime && $desc_categoria){
			$categoria->setDescCategoria($desc_categoria);
			
			$validacao = $categoria->gravar();

			if(!$validacao[0]){
				$formMessage = array(1, $validacao[1]);
			}else{
				$formMessage = array(3, 'Cadastro alterado com sucesso. ');
				$formData["desc_categoria"] = $categoria->getDescCategoria();
			}
		}
		
		$this->addScript(base_url('assets/js/jquery.validate.min.js'));
		$this->addScript(base_url('assets/js/shared/validation.js'));
		$this->addScript(base_url('assets/js/parasuaempresa/cardapio/categoria.js'));
		
		$this->setViewData('formMessage', $formMessage);
		$this->setViewData('formData', $formData);

		$this->setViewData('main_content', 'parasuaempresa/cardapio/categoria');
		$this->load->view('_shared/template', $this->viewData);
	}

	public function editar_categoria(){
		$this->cadastrar_categoria();
	}

	public function cadastrar_item($cod_categoria_auto = FALSE, $cod_item_auto = ''){
		$user_info = $this->getLoggedUser();
		$cod_empresa_auto = $user_info['cod'];
		$image_error = '';
		$item = new Item($cod_item_auto);

		// Dados Formulário
		$datetime 			= $this->input->post('datetime');
		$cod_categoria_auto = $this->input->post('categoria') !== FALSE ? $this->input->post('categoria') : $cod_categoria_auto;
		$desc_item 			= $this->input->post('desc_item');
		$item_indisponivel 	= $this->input->post('ativo');
		$obs 				= $this->input->post('obs_item');

		// tipo(1=erro,2=alerta,3=sucesso), mensagem
		$formMessage = array();
		$formData = array(
			'cod_categoria_auto' 	=> $cod_categoria_auto !== FALSE 	? $cod_categoria_auto : $item->getCodCategoria(),
			'desc_item'  			=> $desc_item !== FALSE 			? $desc_item : $item->getDescItem(),
			'item_indisponivel' 	=> $item_indisponivel !== FALSE 	? $item_indisponivel : $item->getItemIndisponivel(),
			'obs'      				=> $obs !== FALSE 					? $obs : $item->getObs()
			);	

		if($datetime){
			$item->setCodEmpresa($cod_empresa_auto);
			$item->setCodCategoria($cod_categoria_auto);
			$item->setDescItem($desc_item);
			$item->setItemIndisponivel($item_indisponivel);
			$item->setObs($obs);

			//
			// Verifica tamanhos e ingredientes
			//
			foreach($_POST as $key=>$value){

				// Tamanho
				if(strpos($key, 'tamanho_item_cod_auto_') !== FALSE){
					//echo strlen('tamanho_item_cod_auto_');
					$sufixo = substr($key, strlen('tamanho_item_cod_auto_'));

					$tamanho_item_cod_auto  = $this->input->post('tamanho_item_cod_auto_'.$sufixo);
					$tamanho_cod_auto 		= $this->input->post('tamanho_cod_auto_'.$sufixo);
					$tamanho_preco 			= $this->input->post('tamanho_preco_'.$sufixo);
					$tamanho_peso 			= $this->input->post('tamanho_peso_'.$sufixo);
					$tamanho_obs 			= $this->input->post('tamanho_obs_'.$sufixo);

					if($tamanho_cod_auto && $tamanho_preco){
						$tamItem = new Tamanho_item($tamanho_item_cod_auto);
						$tamItem->setCodItem($item->getCodItem());
						$tamItem->setCodTamanho($tamanho_cod_auto);
						$tamItem->setPreco($tamanho_preco);
						$tamItem->setPeso($tamanho_peso);
						$tamItem->setObs($tamanho_obs);
						
						$item->addTamItem($tamItem);
					}
				}

				// Ingrediente
				if(strpos($key, 'cod_ingre_auto_') !== FALSE && !empty($value)){
					$cod_ingre_auto = $value;
					$ingreItem = new Ingrediente_item();
					$ingreItem->setCodIngrediente($cod_ingre_auto);
					$item->addIngreItem($ingreItem);
				}
			}

			if($_FILES['foto']['error'] === 0){
				$resultado = @$this->do_upload();

				if(isset($resultado['error'])){
					$image_error = $resultado['error'];
				}else{
					$item->setFoto($resultado['upload_data']['file_name']);
				}
			}

			$validacao = $item->gravar();

			if(!$validacao[0]){
				$formMessage = array(1, $validacao[1]);
			}else{
				if(empty($cod_item_auto)){
					$formMessage = array(3, 'Item cadastrado com sucesso.');	
				}else{
					$formMessage = array(3, 'Item alterado com sucesso.');
				}
				

				foreach ($formData as $chave) {
					$formData[$chave] = '';
				}
			}
		}

		$categorias  	 = $this->Empresa_model->getCategorias($user_info['cod']);
		$tamanho_rep 	 = new Tamanho_repository();
		$ingrediente_rep = new Ingrediente_repository();

		$this->setViewData('item', $item);
		$this->setViewData('categorias', $categorias);
		$this->setViewData('tamanhos', $tamanho_rep->tamanhosPorEmpresa($cod_empresa_auto));
		$this->setViewData('ingredientes', $ingrediente_rep->ingredientesPorEmpresa($cod_empresa_auto));
		$this->setViewData('page_title', 'Cadastrar Item');
		$this->setViewData('image_error', $image_error);

		$this->addScript(base_url('assets/js/jquery.validate.min.js'));
		$this->addScript(base_url('assets/js/shared/validation.js'));
		$this->addScript(base_url('assets/js/jquery.maskMoney.js'));
		$this->addScript(base_url('assets/js/jquery.reset.js'));
		$this->addScript(base_url('assets/js/parasuaempresa/cardapio/item.js'));
		
		$this->setViewData('formMessage', $formMessage);
		$this->setViewData('formData', $formData);

		$this->setViewData('main_content', 'parasuaempresa/cardapio/item');
		$this->load->view('_shared/template', $this->viewData);
	}

	public function do_upload(){
		$config['upload_path']   = './public/';
		$config['allowed_types'] = 'jpg|png';
		$config['max_size']		 = '1024';
		$config['max_width']  	 = '1024';
		$config['max_height']  	 = '768';
		$config['encrypt_name']  = TRUE;

		$this->load->library('upload', $config);

		if ( ! $this->upload->do_upload('foto')) {
			$error = array('error' => $this->upload->display_errors('', ''));
			return $error;
		}else{
			$data = array('upload_data' => $this->upload->data());
			return $data;
		}
	}

	public function editar_item($cod_categoria_auto, $cod_item_auto){
		$this->cadastrar_item($cod_categoria_auto, $cod_item_auto);
	}

	public function cadastrar_tamanho(){
		//ob_start();
		//var_dump($_POST);
		//$a = ob_get_contents();
		//ob_end_clean();
		
		$datetime 	 = $this->input->post('datetime');
		$abreviatura = $this->input->post('abreviatura');
		$descricao 	 = $this->input->post('descricao');

		if($datetime && $abreviatura && $descricao){
			$user_info = $this->getLoggedUser();
			$cod_empresa_auto = $user_info['cod'];

			$tamanho = new Tamanho();
			$tamanho->setCodTamanho($abreviatura);
			$tamanho->setDescTamanho($descricao);
			$tamanho->setCodEmpresa($cod_empresa_auto);
			$validacao = $tamanho->gravar();

			if($validacao[0]){
				$r = array("result"=>TRUE,"message"=>"Tamanho cadastrado com sucesso");
			}else{
				$r = array("result"=>FALSE,"message"=>$validacao[1]);
			}
		}else{
			$r = array("result"=>FALSE);
		}
		
		echo json_encode($r);
	}

	public function get_tamanhos(){
		$resultado = array();
		$user_info = $this->getLoggedUser();
		$cod_empresa_auto = $user_info['cod'];
		
		$tamanho_rep = new Tamanho_repository();
		$tamanhos = $tamanho_rep->tamanhosPorEmpresa($cod_empresa_auto);
		
		foreach($tamanhos as $tam){
			$resultado[] = array("cod"=>$tam->getCodTamanhoAuto(), "desc"=>$tam->getCodTamanho());
		}

		echo json_encode($resultado);
	}

	public function cadastrar_ingrediente(){
		$datetime 	 		= $this->input->post('datetime');
		$nome_ingrediente 	= $this->input->post('nome_ingrediente');
		$preco_ingrediente 	= $this->input->post('preco_ingrediente');

		if($datetime && $nome_ingrediente && $preco_ingrediente){
			$user_info = $this->getLoggedUser();
			$cod_empresa_auto = $user_info['cod'];

			$ingrediente = new Ingrediente();
			$ingrediente->setDescIngrediente($nome_ingrediente);
			$ingrediente->setPrecoIngrediente($preco_ingrediente);
			$ingrediente->setCodEmpresa($cod_empresa_auto);
			$validacao = $ingrediente->gravar();

			if($validacao[0]){
				$r = array("result"=>TRUE,"message"=>"Ingrediente cadastrado com sucesso");
			}else{
				$r = array("result"=>FALSE,"message"=>$validacao[1]);
			}
		}else{
			$r = array("result"=>FALSE);
		}
		
		echo json_encode($r);
	}

	public function get_ingredientes(){
		$resultado = array();
		$user_info = $this->getLoggedUser();
		$cod_empresa_auto = $user_info['cod'];
		
		$ingrediente_rep = new Ingrediente_repository();
		$ingredientes = $ingrediente_rep->ingredientesPorEmpresa($cod_empresa_auto);
		
		foreach($ingredientes as $ingr){
			$resultado[] = array("cod"=>$ingr->getCodIngrediente(), "desc"=>$ingr->getDescIngrediente());
		}

		echo json_encode($resultado);
	}

}